←
▼
▲
→ T_Value.vbs # [T_AssertValue]
Sub AssertValue( Name as string, TestValue as variant, PassValue as variant,
CompareOption as interger )
値が範囲内であるかどうかをチェックし、範囲外なら詳細なメッセージを付けてエラーにします。
【引数】
Name
TestValue
値の名前、エラーメッセージ用
チェック対象の値
PassValue
範囲
CompareOption
比較オプション
AssertValue "EqualNumber", a, 1, Empty
サンプル
a = 1 であるかチェックします。
テスト
AssertValue "Str", a, Array( "A", "ABC" ), c.CaseSensitive
a = "A" または a = "ABC" であるかチェックします。
AssertValue "RangeNumber", a, Array( 1, 3 ), c.Range
1 ≦ a ≦ 3 であるかチェックします。
ソース
→ vbslib.vbs
←
▼
▲
関連
AssertString "ABC", "AxC"
Sub AssertString( TestString as string, AnswerString as string, Option_ as integer )
文字列が等しいことをチェックし、異なっていたら文字列を比較する Diff ツールを開きます。
【引数】
TestString
AnswerString
テストする文字列
答の文字列
Option_
サンプル
Empty または
ソース
→ TestScript.vbs
文字列に含まれるすべての文字の文字コードも Diff ツールで比較します。
←
▼
▲
Sub AssertD_TypeName( in_Value as variant, in_TypeName as string )
値の型の名前をチェックします。 (デバッグ時のみ)
【引数】
in_Value
in_TypeName
チェックする値
型やクラスの名前
→ vbslib.vbs
ソース
が 0 のときは、何もしません。 高速化のため。
AssertD_TypeName self, "SampleClass"
サンプル
型名をソースのコメントに書くときよりは信頼できるようになります。
←
▼
▲
ErrorValue "Sample", 1
Sub ErrorValue( Name as string, Value as Variant )
問題がある値をメッセージに含めたエラーを発生させます。
【引数】
Name
Value
値の名前
問題がある値
サンプル
<ERROR msg="値が想定外です" name="Sample" now_value="1"/>
スクリプトの例
上記スクリプトを実行した時のエラーメッセージ
ソース
→ vbslib.vbs
←
▼
▲
テキストファイルの中の相対パスをフル・パスに変換します。
←
▼
▲
参考
←
▼
▲
Visual Studio のソリューションをビルドします
Visual Studio のソリューションをクリーンします
Visual Studio のソリューションをリビルドします
関連
→ Module Mixer 3
VisualStudio.vbs
ファイル:
→ T_devenv フォルダ
テスト
Visual Studio 2005〜2010 を操作します。
→ MSBuild
←
▼
▲
Sub devenv_rebuild( SlnPath as string, ConfigName as string )
Dim ds_:Set ds_= new CurDirStack
pushd "src"
devenv_rebuild "sample.sln", "Release"
popd
【引数】
→ コマンドライン・コンパイル
(src)
devenv_rebuild "src\sample_%devenv_ver_name%.sln", "Debug"
Visual Studio のソリューションをリビルドします。
SlnPath
ConfigName
ソリューション・ファイルのパス(.sln)
設定名("Release"など)
ソリューション・ファイルに書かれたバージョン情報を元に、
コンパイラのバージョンを自動的に選択します。
ビルドに失敗したら、E_BuildFail エラーになります。
参考
devenv_rebuild "sample.sln", "Release|x64"
Release|x64 が使えるかどうかは、.sln ファイルをテキストファイル
で開いて、そのコンフィグがあるかどうかで判断してください。
テスト
→ T_devenv.vbs # [T_devenv_build]
→ T_devenv.vbs # [T_devenv_build_MultiFolder]
ソース
→ VisualStudio.vbs
サンプル
←
▼
▲
Sub devenv_build( SlnPath as string, ConfigName as string )
Visual Studio のソリューションをビルドします。
(src)
参考
←
▼
▲
Dim ds_:Set ds_= new CurDirStack
pushd "src"
devenv_clean "sample.sln"
popd
Sub devenv_clean( SlnPath as string )
サンプル:
Visual Studio のソリューションをクリーンします。
【引数】
SlnPath
ソリューション・ファイルのパス(.sln)
(src)
参考
テスト
→ T_devenv.vbs # [T_devenv_build_MultiFolder]
←
▼
▲
Sub devenv_upgrade( SlnPath as string, Opt as Empty )
Dim ds_:Set ds_= new CurDirStack
pushd "src"
devenv_upgrade "sample.sln", Empty
popd
サンプル:
Visual Studio のソリューション・ファイルを新しい Visual Studio 用に変換します。
【引数】
SlnPath
古い Visual Studio のソリューション・ファイルのパス(.sln)
新しいバージョンとは、現在の PC にインストールされている Visual Studio のうち、
最も新しいバージョンのことです。
参考
Opt
Empty または、c.MakeBackup
Opt に、c.MakeBackup を指定すると、変換前のファイルのバックアップを作成します。
ただし、c は、get_VisualStudioConsts の返り値です。
(src)
←
▼
▲
Function get_VisualStudioConsts() as Object
VisualStudio.vbs で使う定数の集合。
サンプル:
Dim c : Set c = get_VisualStudioConsts()
'// c.MakeBackup
(src)
←
▼
▲
devenv_rebuild "src\sample_%devenv_ver_name%.sln", "Release"
devenv_rebuild, devenv_clean などに指定する .sln ファイルのパスには、
%devenv_ver_name% を指定することができます。
インストールされている Visual Studio に応じて、次の文字列に変換されます。
Visual Studio 2015 … "vs2015"
Visual Studio 2013 … "vs2013"
Visual Studio 2012 … "vs2012"
Visual Studio 2010 … "vs2010"
Visual Studio 2008 … "vs2008"
Visual Studio 2005 … "vs2005"
複数の Visual Studio がインストールされているときは、デフォルトでは最新のものが設定されますが、
PC の環境変数や、SetVar で devenv_ver_name を設定することで、バージョンを選択できます。
get_DevEnvObj
echo "Default: " + GetVar( "%devenv_ver_name%" )
GetVar や env で、devenv_ver_name 環境変数の値を取得するときは、その前に
get_DevEnvObj を実行してください。
(src)
テスト
→ devenv_ver_name 環境変数
関連
devenv_ver_name
←
▼
▲
devenv_platform 環境変数の値は、"" (Win32 or x86) または "x64\" です。
初期値は、"" です。 "" 以外のときは、末尾に \ を付けてください。
64bit アプリケーションをビルドするときは、"x64\" を設定してからビルドしてください。
set_ "devenv_platform", "x64\"
devenv_build "Example.sln", "Release"
Assert exist(env("sample sln\%devenv_platform%Release\Example.exe"))
サンプル
%devenv_platform%
←
▼
▲
Function IsVisualStudioInstalled( VersionNum as integer, IsExpress as boolean ) as boolean
【引数】
指定したバージョンの Visual Studio がインストールされているかどうかを返します。
VersionNum
バージョン番号
IsExpress
Express 版かどうか
(src)
インストールされているかどうか
返り値
←
▼
▲
Function GetVisualStudioVersionNum( VersionString as string ) as integer
Visual Studio のバージョン文字列(例:"vs2008")を数値(例:2008)に変換します。
(src)
←
▼
▲
Sub GetSlnFileVersion( SlnPath as string, out_VersionNum as integer,
out_IsExpress as boolean )
指定のソリューション・ファイルが使える Visual Studio のバージョンを返します。
【引数】
SlnPath
Visual Studio のソリューション・ファイルのパス(.sln)
out_VersionNum
(出力) バージョン番号。 2012, 2010, 2008, 2005
(src)
out_IsExpress
(出力) Express 版かどうか
←
▼
▲
Visual Studio の *.sln ファイルを読み込みます。
(src)
テスト
→ T_devenv.vbs # [T_devenv_SlnLoad]
してから
や
にアクセスしてください。
←
▼
▲
Sub VisualStudioSlnClass::Load( SlnFilePath as string )
Visual Studio の *.sln ファイルを読み込みます。
【引数】
SlnFilePath
*.sln ファイルのパス
(src)
←
▼
▲
Dim VisualStudioSlnClass::Projects as ArrayClass of VisualStudioSlnProjectClass
ソリューションの中にあるプロジェクトの一覧。
してからアクセスしてください。
←
▼
▲
Class VisualStudioSlnProjectClass
Public ProjectName '// as string
Public RelativePath '// as string
Public ProjectGuid '// as string
End Class
(src)
参考
←
▼
▲
Dim VisualStudioSlnClass::ConfigurationPlatforms
as ArrayClass of VisualStudioSlnConfigurationPlatformClass
ソリューションの中にあるコンフィギュレーションとプラットフォームの一覧。
してからアクセスしてください。
←
▼
▲
Class VisualStudioSlnConfigurationPlatformClass
Public Configuration '// as string. "Debug", "Release"
Public Platform '// as string. "Win32", "x86", "x64"
End Class
参考
←
▼
▲
Sub DeleteProjectInVisualStudioSln( SlnFilePath as string, ProjectNameh as string )
Visual Studio の *.sln ファイルの中にある1つのプロジェクトを削除します。
【引数】
SlnFilePath
ProjectNameh
*.sln ファイルのパス
削除するプロジェクトの名前
(src)
テスト
→ T_devenv.vbs # [T_devenv_DeleteProjectsInSln]
プロジェクトの名前は、
から参照できます。
←
▼
▲
その他
←
▼
▲
レジストリのサブキーを列挙します。
指定のレジストリ・キーに入っている値を列挙します。
レジストリ・キーの値を .reg ファイルに出力します。
ファイルをダブルクリックしたときに開くプログラムを設定します。
ファイルの右クリック・メニューの1つの項目を追加します。
レジストリにライトします。
指定のレジストリ・キーか値が存在するかどうかを判定します。
PC の電源を切ります。
レジストリからリードします。
関連
他にもあります。左のツリーから選択してください。
←
▼
▲
Sub Shutdown( Operation as string, CountDownTimeSec as integer )
PC の電源を切ります。
【引数】
Operation
CountDownTimeSec
電源の切り方(下記)
電源を切るまでの時間(秒)
(src)
RunProg "cscript main_child.vbs", ""
Shutdown Empty, Empty
Function Setting_getShutdownOperation()
Setting_getShutdownOperation = "PowerOff"
End Function
Function Setting_getShutdownCountDownTimeSec()
Setting_getShutdownCountDownTimeSec = 60
End Function
main_child が終了したらデフォルト設定で電源を切る。
30秒後にスリープする
Shutdown "Sleep", 30
デフォルト設定は、
に下記の関数の定義によって設定します。
関数定義がないときは、"PowerOff", 60 になります。
Shutdown 関数を呼び出すと、カウントダウンを始め、下記のウィンドウが開きます。
ただし、CountDownTimeSec = 0 のときは開きません。
テスト
Operation 引数
次のいずれかの文字列を指定できます。
"PowerOff", "Reboot", "Hibernate", "Sleep", "Standby"
[OK] を押せば、すぐに電源を切ります。
[キャンセル]を押すか、VBScript の
コンソールを閉じると、電源を切らなく
なります。
→ T_Shutdown_Manually.vbs
スリープするときは、scriptlib\vbslib_XXX\SetSuspendState フォルダが必要です。
Sleep と Standby は同じです。
Windows 8 タブレットのコネクテッド・スタンバイ には対応していません。
それぞれの OS のバージョンで行うこと
エラーが発生しても、電源を切るには、
RunProg などで、メイン処理を行う子プロセス
を起動して、子プロセスが終了する(RunProg から戻る)まで待ってから、Shutdown
を実行してください。 こうすれば、Ctrl-C や閉じるボタンが押されても電源が切れます。
通常 60秒後にシャットダウンします。
サンプル
音楽を鳴らしながら、60秒待ち、スリープする
g_CommandPrompt = 1 '// この行だけ SetupVbslibParameters に記述
Sub main()
Play "******.mp3"
Dim e ' as Err2
If TryStart(e) Then On Error Resume Next
Shutdown "Sleep", 60
If TryEnd Then On Error GoTo 0
e.Clear '// ユーザ・キャンセルしてもウィンドウを閉じるため
End Sub
このスクリプトを、Windows のタスクに登録しておくと、1時間ごとにスリープに入ることを
試みるようなことができます。
参考
Windows 7 では、地デジの予約録画などによる、
から、
Shutdown "Sleep" してもスリープ状態になりません。
wakeonlan <電源を入れるPCのMACアドレス>
まず、電源を入れる PC の準備をします。
/usr/bin/net rpc -S <マシン名> -U <アカウント名>%<パスワード> shutdown -t 10
<アカウント名> は、<ユーザ名> または <ドメイン名>\\<ユーザ名>
電源を落とすには、リモート・デスクトップ経由で、コマンドプロンプトから
を実行するか、無停電 Linux サーバー
から下記のコマンドを入力してください。
Windows XP の場合、
[ スタート > マイコンピューター ] を右クリック [ プロパティ > ハードウェア > デバイス
マネージャ ] から、ネットワーク アダプタの子ノードの中から該当するアダプタを
右クリック [ プロパティ ]、[ 詳細設定 > Wake Up Capabilities ] を [ Magic Packet ]、
[ 電源の管理 > このデバイスで、コンピュータのスタンバイ状態を解除できるように
する ] にチェックします。
PC の電源を切ってから、再度電源を入れてすぐに BIOS の設定画面を開き(機種
依存です。例:F2を押す)、Wake On LAN を有効にします(例:Power > Automatic
Power On > Wake on LAN = Primary)
『無停電の Linux サーバー』 にログインして、wakeonlan コマンドを実行します。
なお、MAC アドレスは、コマンドプロンプトから ipconfig /all を実行すると分かります。
./wakeonlan 11:22:33:44:55:66
例:
shutdown /s /f
を実行するか、
ソース
→ vbslib.vbs
→ SetSuspendState フォルダー
サンプル
サンプル
補足
←
▼
▲
IsScreenSaverRunning
(src)
Function IsScreenSaverRunning() as boolean
スクリーンセーバーが動いているかどうかを返します。
→ T_ScreenSaver_Manually.vbs # [T_IsScreenSaverRunning]
テスト
←
▼
▲
Sub RegEnumKeys( Path as string, out_Keys as array of string, Opt as integer )
レジストリのサブキーを列挙します。
【引数】
Path
out_Keys
レジストリのキーのパス
(出力) サブキーのフルパスの配列。 末尾に \ は無い
ファイル:
System.vbs
Dim keys
RegEnumKeys "HKEY_CURRENT_USER\Software\_Test", keys, Empty
'// keys(0) = "HKEY_CURRENT_USER\Software\_Test\Sub"
'// keys(1) = "HKEY_CURRENT_USER\Software\_Test\Sub2"
サンプル:
Opt
オプション。 Empty か F_SubFolder
(src)
サブキーが無いときは、UBound( out_Keys ) = -1 になります。
Path の末尾に \ があってもなくても、キー(フォルダーのようなもの)を指定したことに
なります。
テスト
→ T_Reg.vbs
T_Reg1